class Watcher {
    constructor(vm, key, cb) {
        this.vm = vm
        // data中的属性名称
        this.key = key
        // 回调函数负责更新视图
        this.cb = cb

        // 把Wacther对象记录到Dep类的静态属性target
        Dep.target = this
        //触发get方法，在get方法中会调用addSub
        this.oldValue = vm[key] // 保留更新前的值

        // 清空Dep.target的值
        Dep.target = null
    }
    // 更新视图
    update () {
        // 1.判断新值和旧值是否相同，相同则不执行回调函数更新视图
        if(this.oldValue === this.vm[this.key]){
            return
        }
        this.cb(this.vm[this.key])
    }
}